﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SimpleTaskManager.Domain.Entities
{
    /// <summary>
    /// An enumeration representing the possible statuses of a user
    /// </summary>
    public enum StatusEnum 
    { 
        /// <summary>
        /// Indicates that the employee is hired but currently on a leave
        /// </summary>
        OnALeave, 
        /// <summary>
        /// Indicates an active employee
        /// </summary>
        Hired, 
        /// <summary>
        /// Indicates that the employee was deleted from the system
        /// </summary>
        InActive 
    }

    /// <summary>
    /// The possible statuses of a task
    /// </summary>
    public enum TaskStatusEnum 
    {
        /// <summary>
        /// Indicates the initial state of a task, right after it is created.
        /// </summary>
        New, 
        /// <summary>
        /// Indicates that the task was rejected.
        /// </summary>
        Rejected, 
        /// <summary>
        /// Indicates that the task is ready to begin, but awaiting some events to kick off.
        /// </summary>
        Pending, 
        /// <summary>
        /// Indicates an active task
        /// </summary>
        InProgress, 
        /// <summary>
        /// Indicates that the task has been begun, however for some reasons it failed.
        /// </summary>
        Failed, 
        /// <summary>
        /// Indicates that a task completed successfully.
        /// </summary>
        Finished,
        /// <summary>
        /// Indicates that the leader of the task was removed.
        /// </summary>
        LeaderNeeded
    }

    /// <summary>
    /// An enumeration representing the possible user roles
    /// </summary>
    public enum UserRole 
    {
        /// <summary>
        /// Indicates the basic role
        /// </summary>
        Worker, 
        /// <summary>
        /// Indicates a privilaged role
        /// </summary>
        Manager,
        /// <summary>
        /// Indicates the administrator role
        /// </summary>
        SuperUser
    }
}
